package org.example.projectdemo.repository;

import org.example.projectdemo.model.entity.Course;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * ClassName: CourseRepository
 * Package: org.example.projectdemo.repository
 * Description:
 *
 * @Author ZY
 * @Create 23:05
 * @Version 1.0
 */
@Repository
public interface CourseRepository extends JpaRepository<Course,Long> {
    /**
     * 根据课程代码查找课程
     *
     * @param courseCode 课程代码
     * @return 包含课程的Optional对象，如果找不到则返回Optional.empty()
     */
    Optional<Course> findByCourseCode(String courseCode);

    /**
     * 根据教师姓名查找该教师的所有课程
     *
     * @param teacherName 教师姓名
     * @return 该教师的课程列表
     */
    List<Course> findByTeacherName(String teacherName);

    /**
     * 根据星期几查找当天的课程
     *
     * @param dayOfWeek 星期几 (1-7 代表周一到周日)
     * @return 指定星期几的课程列表
     */
    List<Course> findByDayOfWeek(Byte dayOfWeek);

    /**
     * 根据课程状态查找课程
     *
     * @param courseState 课程状态 (如：active-活跃, inactive-未激活)
     * @return 符合状态的课程列表
     */
    List<Course> findByCourseState(String courseState);
    
    /**
     * 检查指定ID的课程是否存在
     * 
     * @param id 课程ID
     * @return 存在返回true，否则返回false
     */
    boolean existsById(Long id);
}